home *** CD-ROM | disk | FTP | other *** search
/ TestDrive Windows 1993 Fall / TestDrive Windows 1993 Fall.iso / dbase / samples / employee.prg < prev    next >
Encoding:
Text File  |  1993-03-09  |  10.9 KB  |  333 lines

  1. ******************************************************************************
  2. * PROGRAM NAME: EMPLOYEE.PRG
  3. *               EMPLOYEE DATABASE SCREEN
  4. *               SAMPLE BUSINESS APPLICATION PROGRAM
  5. * LAST CHANGED: 09/25/89 09:26AM
  6. * WRITTEN BY:   Borland International Inc.
  7. ******************************************************************************
  8. *
  9. *       FILES USED:
  10. *       Database        = Employee.dbf  (Employee personnel file)
  11. *       Index file      = Employee.mdx
  12. *           TAG: Names  = lastname+firstname+initial  <= Master index
  13. *           TAG: Dept   = department+lastname+firstname+initial
  14. *           TAG: Status = department+STR(salary,8,2)
  15. *           TAG: Years  = STR(yrs_exper,4,1)
  16. *           TAG: Emp_id = emp_id
  17. *       External procedure file used = Library.prg
  18. ******************************************************************************
  19.  
  20. * Main procedure
  21. PROCEDURE Employee
  22.  
  23.    * Link to external procedure file of "tool" procedures
  24.    SET PROCEDURE TO Library
  25.  
  26.    * Set up database environment
  27.    DO Set_env
  28.  
  29.    SET COLOR TO &c_standard.
  30.  
  31.    * Declare variables used:
  32.    * Database memory variables
  33.    STORE ""  TO lastname, firstname, initial, address1, address2, city, state
  34.    STORE ""  TO zip, phone, emp_id, specialty, degree, awards, comments
  35.    STORE ""  TO department, title
  36.    STORE  0  TO laborgrade, yrs_exper, salary, rate
  37.    STORE .T. TO exempt, full_time
  38.    date_hired = {  /  /  }
  39.  
  40.    * Miscellaneous variables - used to pass parameters to Library
  41.    STORE "EMPLOYEE" TO dbf,mlist    && Standard report and mail list available
  42.    STORE "" TO cust_rpt             && Custom report(s) are available
  43.    key      = "m->lastname+m->firstname"
  44.    key1     = "m->lastname"
  45.    key2     = "m->firstname"
  46.    key3     = "NONE"
  47.    keyname1 = "Lastname:"
  48.    keyname2 = "Firstname:"
  49.    keyname3 = ""
  50.    list_flds  = "LASTNAME, FIRSTNAME, DEPARTMENT, PHONE"
  51.  
  52.    DO EmployeeM
  53.  
  54.  
  55.    RELEASE gl_MainMenu                  && Allow Rest_env to reset the
  56.    DO Rest_env                          && environment back.
  57.    ON ERROR
  58.    ON KEY LABEL F1
  59.    CLEAR ALL
  60.    CLOSE ALL
  61.    CLEAR
  62.  
  63. RETURN
  64.  
  65. PROCEDURE EmployeeM
  66.    * Open database files and choose active indexes
  67.    SELECT 1
  68.    USE Employee ORDER Names
  69.    GO TOP
  70.    * Used for area code lookup
  71.    USE Codes ORDER City IN 2
  72.  
  73.    * Load initial record from database into memory variables
  74.    record_num = RECNO()
  75.    DO Load_fld
  76.  
  77.    * Show data screen
  78.    SET COLOR TO &c_standard.
  79.    CLEAR
  80.    DO Dstatus
  81.    DO Backgrnd
  82.    DO Show_data
  83.  
  84.    * Define popup menus
  85.    DO Bar_def
  86.  
  87.    * Activate main popup menu - execute user choices
  88.    SET COLOR TO &c_popup.
  89.    ACTIVATE POPUP main_mnu
  90.    DO Sub_ret
  91.    *
  92. RETURN
  93. *========================= end of main procedure =============================
  94.  
  95. *  UTILITY PROCEDURES (Proprietary to Employee.prg)
  96.  
  97. PROCEDURE Filter
  98.   * Filter (group) data into subset
  99.   * Select subset to set up filter condition (Y=turn on, N=abort selection,
  100.   * T=turn off). If filter is already on, set default choice to T, show
  101.   * window. If filter is not on, set default choice to Y, show window.
  102.   choice = IIF(filters_on,"T","Y")
  103.   DO Filt_ans
  104.   IF choice = "Y"
  105.     * Start process of choosing filter condition
  106.     STORE SPACE(15) TO department, title
  107.     STORE SPACE(11) TO specialty
  108.     STORE SPACE(3)  TO degree
  109.     ACTIVATE WINDOW alert
  110.        @   0,0 SAY "--------- ENTER FILTER CONDITION --------"
  111.        @   1,1 SAY "DEPARTMENT: " GET m->department FUNCTION "!"
  112.        @   2,1 SAY "TITLE       " GET m->title      FUNCTION "!"
  113.        @   3,1 SAY "SPECIALTY   " GET m->specialty  FUNCTION "!"
  114.        @   4,1 SAY "DEGREE      " GET m->degree     FUNCTION "!"
  115.        @   5,1 SAY "Enter one or more conditions"
  116.        READ
  117.     DEACTIVATE WINDOW alert
  118.     * Initialize filter variable to null (empty)
  119.     subset = ""
  120.     * Process user's entries to build filter condition
  121.     subset = subset + IIF("" <> TRIM(m->department), ;
  122.        [department = TRIM("&department.") .AND.], "")
  123.     subset = subset + IIF("" <> TRIM(m->title), ;
  124.        [title = TRIM("&title.") .AND.], "")
  125.     subset = subset + IIF("" <> TRIM(m->specialty), ;
  126.        [specialty = TRIM("&specialty.") .AND.], "")
  127.     subset = subset + IIF("" <> TRIM(m->degree), ;
  128.        [degree = TRIM("°ree.") .AND.], "")
  129.     *
  130.     * Check whether data entered into subset string
  131.     IF "" = TRIM(subset)
  132.        DO Warnbell
  133.        filters_on = .F.
  134.     ELSE
  135.        * If string is not empty, truncate the .AND. from end of subset string
  136.        subset = SUBSTR(subset,1,LEN(subset)-6)
  137.        * Filter on entered filter string condition
  138.        SET FILTER TO &subset.
  139.        * Activate filter by moving record pointer
  140.        GO TOP
  141.        * Check whether filter condition matches any records (no match=EOF)
  142.        filters_on = .NOT. EOF()
  143.        IF .NOT. filters_on
  144.           * Turn off filter if no matching records found
  145.           DO Warnbell
  146.           DO Show_msg WITH "No Employee records match the filter condition"
  147.           SET FILTER TO
  148.           GO record_num
  149.        ENDIF
  150.     ENDIF
  151.   ELSE
  152.      IF choice = "T"
  153.         * If user selects "T", turn off filter
  154.         SET FILTER TO
  155.         filters_on = .F.
  156.      ENDIF
  157.   ENDIF
  158. RETURN
  159.  
  160. PROCEDURE Indexer
  161.    * Create/rebuild indexes
  162.    INDEX ON department+lastname+firstname+initial TAG Dept
  163.    INDEX ON department+STR(salary,8,2)            TAG Status
  164.    INDEX ON STR(yrs_exper,4,1)                    TAG Years
  165.    INDEX ON emp_id                                TAG Emp_id
  166.    INDEX ON lastname+firstname+initial            TAG Names
  167.    GO TOP
  168. RETURN
  169.  
  170. PROCEDURE Init_fld
  171.     * Initialize memory variable values for data entry
  172.     initial    = " "
  173.     STORE SPACE(20) TO address1, address2
  174.     STORE SPACE(10) TO firstname, zip
  175.     STORE SPACE(15) TO lastname, department, title, awards
  176.     STORE SPACE(11) TO emp_id, specialty
  177.     STORE 0 TO laborgrade, yrs_exper, salary, rate
  178.     STORE .T. TO exempt, full_time
  179.     city       = SPACE(14)
  180.     state      = SPACE(2)
  181.     phone      = SPACE(13)
  182.     degree     = SPACE(3)
  183.     comments   = SPACE(40)
  184.     date_hired = {  /  /  }
  185. RETURN
  186.  
  187. PROCEDURE Load_fld
  188.    * Load field values from Employee database record into memory variables
  189.    lastname   = lastname
  190.    firstname  = firstname
  191.    initial    = initial
  192.    emp_id     = emp_id
  193.    address1   = address1
  194.    address2   = address2
  195.    city       = city
  196.    state      = state
  197.    zip        = zip
  198.    phone      = phone
  199.    department = department
  200.    title      = title
  201.    laborgrade = laborgrade
  202.    exempt     = exempt
  203.    full_time  = full_time
  204.    date_hired = date_hired
  205.    specialty  = specialty
  206.    yrs_exper  = yrs_exper
  207.    degree     = degree
  208.    salary     = salary
  209.    rate       = rate
  210.    awards     = awards
  211.    comments   = comments
  212. RETURN
  213.  
  214. PROCEDURE Repl_fld
  215.    * Replace database fields with values of current memory variables
  216.    REPLACE emp_id WITH m->emp_id, lastname WITH m->lastname, ;
  217.            firstname WITH m->firstname, initial WITH m->initial, ;
  218.            address1 WITH m->address1, address2 WITH m->address2, ;
  219.            city  WITH m->city, state WITH m->state, zip WITH m->zip, ;
  220.            phone WITH m->phone, department WITH m->department
  221.    REPLACE title WITH m->title, laborgrade WITH m->laborgrade, ;
  222.            exempt WITH m->exempt, full_time WITH m->full_time, ;
  223.            date_hired WITH m->date_hired, specialty WITH m->specialty, ;
  224.            yrs_exper WITH m->yrs_exper, degree WITH m->degree, ;
  225.            salary WITH m->salary, rate WITH m->rate, ;
  226.            awards WITH m->awards, comments WITH m->comments
  227. RETURN
  228.  
  229. PROCEDURE Backgrnd
  230.    * Display background screen
  231.    * Draw and fill in boxes
  232.    @  1,18 TO   3,41 DOUBLE COLOR &c_blue.
  233.    @  4, 1 TO   6,56 DOUBLE COLOR &c_red.
  234.    @  2,19 FILL TO  2,40    COLOR &c_blue.
  235.    @  4, 2 FILL TO 21,55    COLOR &c_red.
  236.    @ 11, 1 TO  11,56        COLOR &c_red.
  237.    @  7, 1 TO  22,56        COLOR &c_red.
  238.    SET COLOR TO &c_data.
  239.    @  2,20 SAY "EMPLOYEE  DATABASE"
  240.    @  5, 3 SAY "LAST NAME:"
  241.    @  5,32 SAY "FIRST:"
  242.    @  5,53 SAY "."
  243.    @  8, 3 SAY "ADDRESS:"
  244.    @  9, 3 SAY "CITY:"
  245.    @  9,32 SAY "STATE:"
  246.    @ 10, 3 SAY "ZIP:"
  247.    @ 10,32 SAY "PHONE:"
  248.    @ 12, 3 SAY "DEPARTMENT:"
  249.    @ 12,32 SAY "TITLE:"
  250.    @ 13,32 SAY "SPECIALTY:"
  251.    @ 14, 3 SAY "EMPLOYEE NO:"
  252.    @ 14,32 SAY "HIRE DATE:"
  253.    @ 15,32 SAY "FULL TIME:"
  254.    @ 16,32 SAY "EXEMPT:"
  255.    @ 17,32 SAY "LABOR GRADE:"
  256.    @ 18, 3 SAY "SALARY: $"
  257.    @ 18,32 SAY "COMMISSION RATE:"
  258.    @ 18,54 SAY "%"
  259.    @ 19, 3 SAY "DEGREE:"
  260.    @ 19,32 SAY "YEARS EXPERIENCE:"
  261.    @ 20, 3 SAY "AWARDS:"
  262.    @ 21, 3 SAY "COMMENTS:"
  263.    SET COLOR TO &c_standard.
  264. RETURN
  265.  
  266. PROCEDURE Show_data
  267.    * Display data
  268.    SET COLOR TO &c_fields.
  269.    @  5,14 SAY lastname
  270.    @  5,39 SAY firstname
  271.    @  5,52 SAY initial
  272.    @  8,12 SAY address1
  273.    @  8,34 SAY address2
  274.    @  9,12 SAY city
  275.    @  9,39 SAY state
  276.    @ 10,12 SAY zip
  277.    @ 10,39 SAY phone
  278.    @ 12,16 SAY department
  279.    @ 12,39 SAY title
  280.    @ 13,43 SAY specialty
  281.    @ 14,16 SAY emp_id
  282.    @ 14,43 SAY date_hired
  283.    @ 15,43 SAY full_time  PICTURE  "Y"
  284.    @ 16,43 SAY exempt     PICTURE  "Y"
  285.    @ 17,45 SAY laborgrade PICTURE  "9"
  286.    @ 18,14 SAY salary     PICTURE  "999,999.99"
  287.    @ 18,50 SAY rate       PICTURE  "99.9"
  288.    @ 19,14 SAY degree
  289.    @ 19,50 SAY yrs_exper  PICTURE  "99.9"
  290.    @ 20,14 SAY awards
  291.    @ 21,14 SAY comments
  292.    SET COLOR TO &c_standard.
  293.    ON KEY LABEL F9 DO Findcode WITH m->city
  294. RETURN
  295.  
  296. PROCEDURE Get_data
  297.    * Display data for entry
  298.    SET COLOR TO &c_data.
  299.    @  5,14 GET m->lastname   PICTURE "!XXXXXXXXXXXXXX" ;
  300.            MESSAGE "Enter employee last name"
  301.    @  5,39 GET m->firstname  PICTURE "!XXXXXXXXX"
  302.    @  5,52 GET m->initial    PICTURE "!"
  303.    @  8,12 GET m->address1
  304.    @  8,34 GET m->address2
  305.    @  9,12 GET m->city       PICTURE "!XXXXXXXXXXXXX"
  306.    @  9,39 GET m->state      PICTURE "!!"
  307.    @ 10,12 GET m->zip
  308.    @ 10,39 GET m->phone      PICTURE  "(999)999-9999"
  309.    @ 12,16 GET m->department PICTURE "@M SALES, EXECUTIVE" ;
  310.            MESSAGE "Press spacebar for Department options"
  311.    @ 12,39 GET m->title      FUNCTION "!"
  312.    @ 13,43 GET m->specialty  FUNCTION "!"
  313.    @ 14,16 GET m->emp_id     PICTURE  "999-99-9999"
  314.    @ 14,43 GET m->date_hired FUNCTION "D"
  315.    @ 15,43 GET m->full_time  PICTURE  "Y" ;
  316.            WHEN TRIM(m->department) <> "EXECUTIVE"
  317.    @ 16,43 GET m->exempt     PICTURE  "Y" ;
  318.            WHEN TRIM(m->department) <> "EXECUTIVE"
  319.    @ 17,45 GET m->laborgrade PICTURE  "9"
  320.    @ 18,14 GET m->salary     PICTURE  "999,999.99"
  321.    @ 18,50 GET m->rate       PICTURE  "99.9" ;
  322.            WHEN TRIM(m->department) <> "EXECUTIVE"
  323.    @ 19,14 GET m->degree     PICTURE  "!!!"
  324.    @ 19,50 GET m->yrs_exper  PICTURE  "99.9"
  325.    @ 20,14 GET m->awards     FUNCTION "!"
  326.    @ 21,14 GET m->comments
  327.    SET COLOR TO &c_standard.
  328.    ON KEY LABEL F9 DO Findcode WITH m->city
  329. RETURN
  330.  
  331. **********************************  END OF EMPLOYEE.PRG  *********************
  332.  
  333.